package com.itxg.booksmanage.common;

import com.itxg.booksmanage.exception.BaseErrorInfoInterface;
import com.itxg.booksmanage.exception.ExceptionEnum;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

/**
 * 自定义响应结果类
 */
@NoArgsConstructor
@Setter
@Getter
@ToString
public class R {
    // 响应代码
    private String code;
    // 响应消息
    private String msg;
    // 响应数据
    private Object data;

    public R(BaseErrorInfoInterface errorInfo) {
        this.code = errorInfo.getResultCode();
        this.msg = errorInfo.getResultMsg();
    }

    /**
     * 成功（无返回数据）- 与下面的方法重载，内部调用下面的重载方法
     */
    public static R success() {
        return success(null);
    }

    /**
     * 成功（带返回数据） - 与上面的方法重载
     */
    public static R success(Object data) {
        R rb = new R();
        rb.setCode(ExceptionEnum.SUCCESS.getResultCode());
        rb.setMsg(ExceptionEnum.SUCCESS.getResultMsg());
        rb.setData(data);
        return rb;
    }

    /**
     * 失败
     */
    public static R error(BaseErrorInfoInterface errorInfo) {
        R rb = new R();
        rb.setCode(errorInfo.getResultCode());
        rb.setMsg(errorInfo.getResultMsg());
        rb.setData(null);
        return rb;
    }

    /**
     * 失败（自定义状态码）
     */
    public static R error(String code, String message) {
        R rb = new R();
        rb.setCode(code);
        rb.setMsg(message);
        rb.setData(null);
        return rb;
    }

    /**
     * 失败（-1 状态码，自定义消息）
     */
    public static R error(String message) {
        R rb = new R();
        rb.setCode("-1");
        rb.setMsg(message);
        rb.setData(null);
        return rb;
    }

}

